#ifndef _FILE_CONTRAL_
#define _FILE_CONTRAL_
#include <fstream>
#include <iostream>
#include <string>
#include <stdlib.h>

using std::cout;
using std::endl;

class File_Manage {
public:
  void copy(std::string src, std::string dst) {
    // using namespace std;
    std::ifstream in(src, std::ios::binary);
    std::ofstream out(dst, std::ios::binary);
    if (!in.is_open()) {
      cout << "error open file " << src << endl;
      exit(EXIT_FAILURE);
    }
    if (!out.is_open()) {
      cout << "error open file " << dst << endl;
      exit(EXIT_FAILURE);
    }
    if (src == dst) {
      cout << "the src file can't be same with dst file" << endl;
      exit(EXIT_FAILURE);
    }
    char buf[2048];
    long long totalBytes = 0;
    while (in) {
      // read从in流中读取2048字节，放入buf数组中，同时文件指针向后移动2048字节
      //若不足2048字节遇到文件结尾，则以实际提取字节读取。
      in.read(buf, 2048);
      // gcount()用来提取读取的字节数，write将buf中的内容写入out流。
      out.write(buf, in.gcount());
      totalBytes += in.gcount();
    }
    in.close();
    out.close();
  }
};
#endif
